﻿using System.Threading.Tasks;
using GWB.Application.System.Auth.Dtos;
using GWB.Core;
using GWB.Core.Common.Entity;
using GWB.Core.TableEntity;

namespace GWB.Application.System.Auth.AuthService
{
    /// <summary>
    /// 授权服务
    /// </summary>
    public interface IAuthService
    {
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Result<AuthOutDto>> LoginAsync(AuthInputDto input);

        /// <summary>
        /// 获取当前登录用户
        /// </summary>
        /// <returns></returns>
       Task<Result<CurrentUserDto>> GetCurrentUser();


        /// <summary>
        /// 用户合法性验证
        /// </summary>
        /// <param name="userInput"></param>
        /// <returns></returns>
        Task<Result> UserAuthentication(User userInput);

        /// <summary>
        /// 用户合法性验证
        /// </summary>
        /// <returns></returns>
        Task<Result> UserAuthentication();

    }
}
